Linux系统服务

        如果你对windows非常熟悉的话,相信你肯定配置过开机启动的服务,有些服务我们日常用不到则要把它停掉,一来可以节省资源,二来可以减少安全隐患。在linux上同样也有相关的工具来管理系统的服务。

1. ntsysv服务配置工具

        用来配置哪些服务开启或者关闭,有点类似图形界面,不过是使用键盘来控制的。如果没有这个命令请使用 yum install -y ntsysv 安装它。安装好后,直接运行命令 ntsysv 回车后弹出一个配置界面:

        按键盘的上下方向键可以调节红色光标,按空格可以选择开启或者不开启,如果前面的中括号内显示有 * 则表示开启否则不开启。通过这个工具也可以看到目前系统中所有的服务。 建议除 “crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl” 外其他服务全部停掉。选择好后,按 “tab” 键选择 “确定”, 然后回车,需要重启机器才能生效

2. chkconfig服务管理工具

        Linux系统所有的预设服务可以查看/etc/init.d/目录得到:

1
2
3
4
5
6
7
8
[root@localhost ~]# ls /etc/init.d
auditd keepalived netfs portreserve rpcidmapd squid
crond killall network postfix rpcsvcgssd sshd
functions messagebus nfs rdisc rsyslog sysstat
halt mysqld nfslock resin sandbox tomcat
ip6tables mysqldslave nmb restorecond saslauthd udev-post
iptables named ntpd rpcbind single vsftpd
ipvsadm netconsole ntpdate rpcgssd smb winbind

        其实这就是系统所有的预设服务了。为什么这样讲,因为系统预设服务都是可以通过这样的命令实现 service 服务名 start|stop|restart 这里的服务名就是/etc/init.d/目录下的这些文件了。除了可以使用 service crond start 启动crond外,还可以使用 /etc/init.d/crond start 来启动。

        言归正传,我们可以使用 chkconfig –list 列出所有的服务以及每个级别是否开启:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@localhost ~]# chkconfig --list
abrt-ccpp 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:启用 6:关闭
abrtd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:启用 6:关闭
acpid 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
atd 0:关闭 1:关闭 2:关闭 3:关闭 4:启用 5:启用 6:关闭
auditd 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
blk-availability 0:关闭 1:启用 2:启用 3:关闭 4:启用 5:启用 6:关闭
cpuspeed 0:关闭 1:启用 2:启用 3:关闭 4:启用 5:启用 6:关闭
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
haldaemon 0:关闭 1:关闭 2:关闭 3:关闭 4:启用 5:启用 6:关闭
htcacheclean 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
ip6tables 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
irqbalance 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
kdump 0:关闭 1:关闭 2:关闭 3:关闭 4:启用 5:启用 6:关闭
lvm2-monitor 0:关闭 1:启用 2:启用 3:关闭 4:启用 5:启用 6:关闭
mdmonitor 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
messagebus 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
netconsole 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
netfs 0:关闭 1:关闭 2:关闭 3:关闭 4:启用 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ntpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
ntpdate 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
postfix 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
psacct 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
quota_nld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
rdisc 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
restorecond 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
rngd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
rsyslog 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭
saslauthd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
smartd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
sysstat 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:关闭 4:启用 5:启用 6:关闭

        这里的级别(0,1,2,3,4,5,6)就是 /etc/inittab 里面的那几个启动级别了,0、1、6运行级别被系统保留:其中0作为shutdown动作,1作为重启至单用户模式,6为重启;在一般的Linux系统实现中,都使用了2、3、4、5几个级别,在CentOS系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示图形登录方式。我们可以使用grep命令把我们想要看的服务过滤出来:

1
2
[root@localhost ~]# chkconfig --list |grep cron
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

        现在我们只是看到了各服务在每个级别下是否开启,那么如何去更改哪个级别下是否开启呢?

1
2
3
[root@localhost ~]# chkconfig --level 3 crond off
[root@localhost ~]# chkconfig --list |grep cron
crond 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:启用 6:关闭

        用 –level 指定级别,后面是服务名,然后是 off 或者 on ,–level 后还可以跟多个级别:

1
2
3
[root@localhost ~]# chkconfig --level 345 crond off
[root@localhost ~]# chkconfig --list |grep cron
crond 0:关闭 1:关闭 2:启用 3:关闭 4:关闭 5:关闭 6:关闭

        另外还可以省略级别,默认是针对2,3,4,5级别操作:

1
2
3
[root@localhost ~]# chkconfig crond on
[root@localhost ~]# chkconfig --list |grep cron
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

        chkconfig 还有一个功能就是可以把某个服务加入到系统服务,即可以使用 service 服务名 start 这样的形式,并且可以在 chkconfig --list 中查找到。当然也能删除掉。

1
2
3
4
5
[root@localhost ~]# chkconfig --del crond
[root@localhost ~]# chkconfig --list |grep cron
[root@localhost ~]# chkconfig --add crond
[root@localhost ~]# chkconfig --list |grep cron
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

        这个功能常用在把自定义的启动脚本加入到系统服务当中。